// 引入 Vue Router 所需的核心模块
import { createRouter, createWebHistory } from 'vue-router'

// 引入页面组件，用于路由配置
import Login from '../views/Login.vue'
import Dashboard from '../views/Dashboard.vue'

// 引入 Pinia 的 useAuthStore，用于权限控制（判断用户是否已登录）
import { useAuthStore } from '../stores/auth'

/**
 * 定义路由表 routes
 * 每个对象表示一个路由规则，包含路径、名称、组件、子路由等信息
 */
const routes = [
  {
    // 根路径重定向到登录页
    path: '/',
    redirect: '/login'
  },
  {
    // 登录页路由
    path: '/login',
    name: 'Login',
    component: Login,
    meta: {
      requiresAuth: false // 表示该页面不需要登录即可访问
    }
  },
  {
    // 主布局容器路由（Dashboard）
    path: '/dashboard',
    name: 'Dashboard',
    component: Dashboard,
    meta: {
      requiresAuth: true // 表示该页面需要登录后才能访问
    },
    redirect: '/dashboard/employee',
    children: [
      {
        // 子路由：个人中心页
        path: 'profile',
        name: 'Profile',
        component: () => import('../views/Profile.vue') // 动态导入组件，实现懒加载
      },
      {
        // 子路由：员工管理页
        path: 'employee',
        name: 'Employee',
        component: () => import('../views/Employee.vue')
      },
      {
        // 子路由：部门管理页
        path: 'department',
        name: 'Department',
        component: () => import('../views/Department.vue')
      },
      {
        // 子路由：数据统计页
        path: 'statistics',
        name: 'Statistics',
        component: () => import('../views/Statistics.vue')
      }
    ]
  }
]

/**
 * 创建并导出路由实例
 * 使用 createWebHistory() 创建基于 HTML5 History 模式的路由
 */
const router = createRouter({
  history: createWebHistory(),
  routes // 路由配置
})

/**
 * 全局前置守卫 beforeEach
 * 在每次路由跳转前执行，用于权限验证和导航控制
 */
router.beforeEach((to, from, next) => {
  // 获取用户认证状态存储实例
  const authStore = useAuthStore()

  // 判断目标路由是否需要认证，并且用户未登录
  if (to.meta.requiresAuth && !authStore.isAuthenticated) {
    // 如果未登录，则重定向到登录页
    next({ name: 'Login' })
  }
  // 如果用户已经登录，但试图访问登录页，则重定向到仪表盘
  else if (to.name === 'Login' && authStore.isAuthenticated) {
    next({ name: 'Dashboard' })
  }
  // 否则正常跳转
  else {
    next()
  }
})

// 导出路由实例，供 main.js 中挂载使用
export default router